package com.hxc.common.service.jobs;

import com.hxc.common.bean.ZdMarkDown;
import com.hxc.common.bean.dataDb.ZdMarkDownDao;
import com.hxc.common.service.MarkDownV32Service;
import java.sql.Connection;
import java.util.Date;
import java.util.List;

public class GitLabJob {

  public void uploadGitLabEHSOPTask(Connection conn) throws Exception {
    try {
      List<ZdMarkDown> zdMarkDowns = new MarkDownV32Service().markdownEnter();
      ZdMarkDownDao zdMarkDownDao = new ZdMarkDownDao(conn);
      List<ZdMarkDown> allZdMarkDowns = zdMarkDownDao.selectByType("异常SOP");
      for (ZdMarkDown zdMarkDown : zdMarkDowns) {
        //根据文件名和路径判断是否存在

        ZdMarkDown record = allZdMarkDowns.stream().filter(
            item -> item.getFileName().equals(zdMarkDown.getFileName()) && item.getFilePath()
                .equals(zdMarkDown.getFilePath())).findFirst().orElse(null);
        if (record == null) {
          zdMarkDown.setCreateTime(new Date());
          zdMarkDown.setUpdateTime(new Date());
          try {
            zdMarkDownDao.insert(zdMarkDown);
          } catch (Exception e) {
            e.printStackTrace();
            continue;
          }

        } else {
          if (!record.getFileContent().equals(zdMarkDown.getFileContent())) {
            record.setFileContent(zdMarkDown.getFileContent());
            record.setUpdateTime(new Date());
            try {
              zdMarkDownDao.update(record);
            } catch (Exception e) {
              e.printStackTrace();
              continue;
            }

          }
        }
      }
      // 获取所有文件
      List<ZdMarkDown> allMarkDownList = zdMarkDownDao.selectByType("异常SOP");
      // zdMarkDowns没有但allMarkDownList的数据需删除
      for (ZdMarkDown zdMarkDown : allMarkDownList) {
        // 根据文件路径和文件名，判断是否有不存在数据
        boolean fileExists = false;
        for (ZdMarkDown zd : zdMarkDowns) {
          if (zd.getFilePath().equals(zdMarkDown.getFilePath()) && zd.getFileName()
              .equals(zdMarkDown.getFileName())) {
            fileExists = true;
            break;
          }
        }
        if (!fileExists) {
          zdMarkDownDao.delete(zdMarkDown.getHandle());
        }
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
